// pages/studentInfo/techerInfo/techerInfo.js
import Dialog from '@vant/weapp/dialog/dialog';
import {uploadTecherInfo,getTecher,changeTeacher,deleteTeacher,getTeacherByValue} from '../../../api/manage'
Page({

  /**
   * 页面的初始数据
   */
  data: {
    techerListText: '教师列表',
    tableData: [
    ],
    techerList:[],
    listName:["工号","姓名","电话","专业"],
    totalName:["工号","姓名","电话","专业","教授课程"],
  },
    async handleTableUpdate(event){
    const updatedItem = event.detail.updatedItem;
    const updateIndex = event.detail.updateIndex;
    // 更新父组件的数据
    const updatedTableList = this.data.techerList;
    updatedTableList[updateIndex] = { ...updatedTableList[updateIndex], ...updatedItem };

    //调用更新的接口
    let res = await changeTeacher(updatedItem)
    if (res.code === 200) {
      // 清空数据
      this.setData({
        techerList: updatedTableList
      });
      // 弹出提示框
      wx.showToast({
          title: '修改成功', // 提示内容
          icon: 'success',   // 图标类型
          duration: 2000     // 显示时长
      });
    
  } else {
      // 处理上传失败的情况
      wx.showToast({
          title: '修改失败',
          icon: 'none',
          duration: 2000
      });
  }
  },
   async handleTableDelect(event){
    const updateIndex = event.detail.updateIndex;
    const updatedTableList = this.data.techerList; 
    const teacherId = updatedTableList[updateIndex].teacherId
    console.log("点击删除：",teacherId);
    let res = await deleteTeacher(teacherId)
      // console.log(res);
    if (res.code === 200) {
      updatedTableList.splice(updateIndex, 1);
      // 更新状态，刷新视图
      this.setData({
        techerList: updatedTableList
      });
      // 弹出提示框
      wx.showToast({
          title: '删除成功', // 提示内容
          icon: 'success',   // 图标类型
          duration: 2000     // 显示时长
      });
    
  } else {
      // 处理上传失败的情况
      wx.showToast({
          title: '删除失败',
          icon: 'none',
          duration: 2000
      });
  }
   },
   handleDataChange(event) {
    const receivedData = event.detail; // 获取子组件传递的数据
    console.log('接收到的数据:', receivedData);
  
    // 合并现有的 tableData 和接收到的数据
    const combinedData = [...this.data.tableData, ...receivedData];
  
    // 用于保存被去重的对象
    const duplicateIds = [];
  
    // 去重逻辑，确保 id 唯一
    const uniqueData1 = combinedData.filter((item, index, self) => {
      const isDuplicate = index !== self.findIndex((t) => t.teacherNo === item.teacherNo);
      if (isDuplicate) {
        duplicateIds.push(item); // 记录被去重的对象
      }
      return !isDuplicate; // 只保留唯一项
    });

    const teacherList = this.data.techerList || [];
    console.log("teacherList:",teacherList);
    // 再次过滤 uniqueData1，去掉与 tableList 中 teacherNo 相同的项，并记录被去除的项
    const finalUniqueData = uniqueData1.filter(item => {

      // const isDuplicateInTeacherList = teacherList.some(t => t.teacherNo === item.teacherNo);
      const isDuplicateInTeacherList = teacherList.some(t => {
        // console.log(`t.teacherNo: ${t.teacherNo} -----item.teacherNo: ${item.teacherNo}`);
        console.log("555555");
        return t.teacherNo === item.teacherNo;
      });
      if (isDuplicateInTeacherList) {
        duplicateIds.push(item); // 记录被去除的项
      }
      return !isDuplicateInTeacherList; // 只保留不重复的项
    });
  
    // 更新状态，去重后的数据
    this.setData({
      tableData: finalUniqueData
    });
  
    // 如果有重复项，弹出提示框
    if (duplicateIds.length > 0) {
      const duplicateDetails = duplicateIds.map(item => `ID: ${item.teacherNo}, 姓名: ${item.name}, 电话: ${item.phone}, 教授课程: ${item.major}`).join('\n');
      Dialog.alert({
        message: `由于工号相同，去重的用户:\n${duplicateDetails}`
      }).then(() => {
        // 在对话框关闭后可以执行的操作
      });
    }
  
    console.log("最终的去重后的 tableData:", this.data.tableData);
  },
  
  
  
  // handleDataChange(event){
  //   const receivedData = event.detail; // 获取子组件传递的数据
  //   console.log('接收到的数据:', receivedData);

  //   // 合并现有的 tableData 和接收到的数据
  //   const combinedData = [...this.data.tableData, ...receivedData];

  //   // 用于保存被去重的对象
  //   const duplicateIds = [];
    
  //   // 去重逻辑，确保 id 唯一
  //   const uniqueData = combinedData.filter((item, index, self) => {
  //     const isDuplicate = index !== self.findIndex((t) => t.teacherNo === item.teacherNo);
  //     if (isDuplicate) {
  //       duplicateIds.push(item); // 记录被去重的对象
  //     }
  //     return !isDuplicate; // 只保留唯一项
  // });

  // // 更新状态，去重后的数据
  // this.setData({
  //   tableData: uniqueData
  // });

  // // 如果有重复项，弹出提示框
  // if (duplicateIds.length > 0) {
  //   const duplicateDetails = duplicateIds.map(item => `ID: ${item.teacherNo}, 姓名: ${item.name},电话: ${item.phone}, 教授课程: ${item.major}`).join('\n');

  //   Dialog.alert({
  //     message: `由于工号相同，去重的用户:\n${duplicateDetails}`
  //   }).then(() => {
  //     // 在对话框关闭后可以执行的操作
  //   });
  // }

  // console.log("去重后的 tableData:", this.data.tableData);
  // },
  async handleSubmit(){
    //将数据发送出去
    //调用子组件清空list
    const res = await uploadTecherInfo(this.data.tableData)
    if (res.code === 200) {
      this.selectComponent('#myInput').submit(); 
      this.getTecherList()
      // 清空数据
      this.setData({
        // techerList: [...this.data.tableData, ...this.data.techerList], // 在前面添加 tableData
        tableData: []
      });
      // 弹出提示框
      wx.showToast({
          title: '上传成功', // 提示内容
          icon: 'success',   // 图标类型
          duration: 2000     // 显示时长
      });
    
  } else {
      // 处理上传失败的情况
      wx.showToast({
          title: '上传失败',
          icon: 'none',
          duration: 2000
      });
  }
  },
  // 输入改变时调用
  onSearchChange(event) {
    const newValue = event.detail; // 获取新的值
    console.log("当前搜索值:", newValue); // 打印当前的值

    this.setData({
      value: newValue // 更新 data 中的 value
    });

    // 调用防抖后的搜索方法
    this.debouncedSearch(newValue);
  },
  // 防抖后的搜索方法
 async toSearch(value) {
    console.log("进行搜索:", value);
    // 这里可以放入你的搜索逻辑
    let res = await getTeacherByValue(value)
    this.setData({
      techerList:res.data
    })
  },
   debounce(func, wait) {
    let timeout;
    return function(...args) {
      const context = this; // 保存上下文
      clearTimeout(timeout);
      timeout = setTimeout(() => func.apply(context, args), wait);
    };
  },
  async getTecherList(){
    const res = await getTecher();
    if (res.code === 200) {
      const updatedTeacherList = res.data.map(item => ({
        ...item,
        courses: typeof item.courses === 'string' 
          ? item.courses.split(',').map(course => course.trim()) 
          : (Array.isArray(item.courses) && item.courses.length > 0 ? item.courses : [])
      }));
    
      this.setData({
        techerList: updatedTeacherList
      });
    }
    console.log("techerList:",this.data.techerList);
  },


    /**
   * 生命周期函数--监听页面加载
   */
 async onLoad(options) {
  this.getTecherList()
    // const res = await getTecher();
    // if (res.code === 200) {
    //   const updatedTeacherList = res.data.map(item => ({
    //     ...item,
    //     courses: typeof item.courses === 'string' 
    //       ? item.courses.split(',').map(course => course.trim()) 
    //       : (Array.isArray(item.courses) && item.courses.length > 0 ? item.courses : [])
    //   }));
    
    //   this.setData({
    //     techerList: updatedTeacherList
    //   });
    // }
    // console.log("techerList:",this.data.techerList);
   
  },

 
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {
    this.debouncedSearch = this.debounce(this.toSearch.bind(this), 1000); // 1秒的防抖秒的防抖
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})